package com.gxc.integer;

import java.util.Scanner;

/**
 * 求出大于或等于 N 的最小回文素数。
 *
 * 如果一个数大于 1，且其因数只有 1 和它自身，那么这个数是素数。 例如，2，3，5，7，11 以及 13 是素数。
 *
 * 如果一个数从左往右读与从右往左读是一样的，那么这个数是回文数，例如，12321 是回文数。
 *
 * 输入描述
 * 一个数
 *
 * 输出描述
 * 一个数
 */
public class MinPalindromicPrime {

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int n = scanner.nextInt();
        scanner.close();

        while (true) {
            if (isSymmetryNum(n) && isPrime(n)) {
                System.out.println(n);
                break;
            }
            n++;  // 尝试下一个数
        }
    }

    // 判断是否为回文数
    public static boolean isSymmetryNum(long num) {
        String s = Long.toString(num);
        int i = 0, j = s.length() - 1;
        while (i < j) {
            if (s.charAt(i) != s.charAt(j)) {
                return false;
            }
            i++;
            j--;
        }
        return true;
    }

    // 判断是否为素数
    public static boolean isPrime(long n) {
        if (n < 2) return false;
        if (n == 2 || n == 3) return true;
        if (n % 2 == 0 || n % 3 == 0) return false;
        // 只需要检查 6k ± 1 形式的数
        for (long i = 5; i * i <= n; i += 6) {
            if (n % i == 0 || n % (i + 2) == 0)
                return false;
        }
        return true;
    }
}
